/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved.                             */
/* Open Source Software - may be modified and shared by FRC teams. The code   */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project.                                                               */
/*----------------------------------------------------------------------------*/
package com.grt192.deploy;

import com.grt192.benchtest.controller.BenchCameraController;
import com.grt192.benchtest.controller.BenchDriveController;
import com.grt192.benchtest.controller.BenchFinaleController;
import com.grt192.benchtest.controller.BenchKickerController;
import com.grt192.benchtest.controller.BenchRollerController;
import com.grt192.benchtest.mechanism.BenchCameraAssembly;
import com.grt192.benchtest.mechanism.BenchDriveTrain;
import com.grt192.benchtest.mechanism.BenchFinaleMechanism;
import com.grt192.benchtest.mechanism.BenchKicker;
import com.grt192.benchtest.mechanism.BenchRollers;
import com.grt192.core.Controller;
import com.grt192.core.GRTRobot;
import com.grt192.core.Mechanism;
import com.grt192.mechanism.GRTDriverStation;

/**
 * The VM is configured to automatically run this class, and to call the
 * functions corresponding to each mode, as described in the SimpleRobot
 * documentation. If you change the name of this class or the package after
 * creating this project, you must also update the manifest file in the resource
 * directory.
 */
public class MainRobot extends GRTRobot {

    Controller benchController;
    Mechanism benchMechanism;
    BenchKickerController kickerController;
    BenchKicker kicker;
    BenchRollerController rollerController;
    BenchRollers rollers;
    BenchCameraAssembly cameraKit;
    BenchCameraController cameraController;
    BenchFinaleController finaleController;
    BenchFinaleMechanism finaleMechanism;

    public MainRobot() {
        benchMechanism = new BenchDriveTrain(8, 10, 7, 9, true);
        GRTDriverStation ds = new GRTDriverStation(1, 2, 3);
        benchController = new BenchDriveController(ds, (BenchDriveTrain) benchMechanism);
        teleopControllers.addElement(benchController);

        kicker = new BenchKicker(2, 1, true);
        kickerController = new BenchKickerController(kicker, ds);
        teleopControllers.addElement(kickerController);

        rollers = new BenchRollers(3, 6, true);
        rollerController = new BenchRollerController(rollers, ds);
        teleopControllers.addElement(rollerController);

        finaleMechanism = new BenchFinaleMechanism(4, 5, true);
        finaleController = new BenchFinaleController(finaleMechanism, ds);
        teleopControllers.addElement(finaleController);

        cameraKit = new BenchCameraAssembly(1, false);
        cameraController = new BenchCameraController(cameraKit);
        teleopControllers.addElement(cameraController);
    }
}
